package com.cloud.rabbitmq.test.simple;

import com.cloud.rabbitmq.test.ConnectionUtil;

import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * 基本消息模型：1.创建连接，2.使用连接声明通道，3.使用通道发送信息，4.关闭通道
 */
public class Send {

    private final static String QUEUE_NAME = "simple_queue";

    public static void main(String[] argv) throws Exception {
        // 获取到连接,
        Connection connection = ConnectionUtil.getConnection();
        // 从连接中创建通道，使用通道才能完成消息相关的操作
        Channel channel = connection.createChannel();
        // 声明（创建）队列
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        // 消息内容
        String message = "Hello World!";
       //设置信息属性
        AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
                .deliveryMode(2) // 持久化消息
                .expiration("6000") // 设置过期时间为 6 秒
                .build();
        // 向指定的队列中发送消息
        channel.basicPublish("", QUEUE_NAME, properties, message.getBytes());

        System.out.println(" [x] Sent '" + message + "'");

        //关闭通道和连接,,jvm进程关闭
        channel.close();
        connection.close();
    }
}
